package flex.cc.basicinformation.service.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import flex.cc.PublicUtil;
import flex.cc.base.dto.LoginAuthDto;
import flex.cc.basicinformation.dao.ServiceConfigDao;
import flex.cc.basicinformation.entity.ServiceConfigEntity;
import flex.cc.basicinformation.service.ServiceConfigService;
import flex.cc.core.utils.RequestUtil;

/**
*
* @author WANGCONG
* 2022年2月23日下午15:16:51
* @desc 服务项目配置实现层
*/
@Service("serviceConfigService")
@Transactional(rollbackFor = Exception.class)
public class ServiceConfigServiceImpl extends ServiceImpl<ServiceConfigDao, ServiceConfigEntity> implements ServiceConfigService{

	@Resource
	private ServiceConfigDao serviceConfigDao;
	
	/**
	*
	* @author WANGCONG
	* 2022年2月23日下午16:36:39
	* @desc 分页查询
	*/
	@Override
	public IPage<ServiceConfigEntity> queryListWithPage(ServiceConfigEntity vo) {
		Page<ServiceConfigEntity> page = new Page<>(vo.getPageNum(),vo.getPageSize());
		IPage<ServiceConfigEntity> pageData=serviceConfigDao.queryListWithPage(page, vo);
		return pageData;
	}

	/**
	 *
	 * @author WANGCONG
	 * 2022年2月23日下午17:39:11
	 * @desc 切换状态
	 */
	@Override
	public boolean modifyStatus(ServiceConfigEntity configDto, LoginAuthDto loginAuthDto) {
		configDto.setUpdater(loginAuthDto.getLoginName());
		configDto.setUpdateTime(new Date());
		return serviceConfigDao.modifyStatus(configDto);
	}

	/**
	 * 
	 * @author WANGCONG
	 * 2022年2月24日下午13:19:24
	 * @desc 根据主键查询
	 */
	@Override
	public ServiceConfigEntity queryByDataId(String dataId) {
		return serviceConfigDao.queryByDataId(dataId);
	}

	/**
	 * 
	 * @author WANGCONG
	 * 2022年2月24日下午13:47:06
	 * @desc 服务项目配置保存
	 */
	@Override
	public void save(Map<String, Object> reqVo) {
		LoginAuthDto loginUser = RequestUtil.getLoginUser();
		String dataId = PublicUtil.isNotEmpty(reqVo.get("dataId")) ? reqVo.get("dataId").toString() : "";
		String serviceId = PublicUtil.isNotEmpty(reqVo.get("serviceId")) ? reqVo.get("serviceId").toString() : "";
		String serviceName = PublicUtil.isNotEmpty(reqVo.get("serviceName")) ? reqVo.get("serviceName").toString() : "";
		String serviceCode = PublicUtil.isNotEmpty(reqVo.get("serviceCode")) ? reqVo.get("serviceCode").toString() : "";
		String serviceType = PublicUtil.isNotEmpty(reqVo.get("serviceType")) ? reqVo.get("serviceType").toString() : "";
		String convertName = PublicUtil.isNotEmpty(reqVo.get("convertName")) ? reqVo.get("convertName").toString() : "";
		String cardType = PublicUtil.isNotEmpty(reqVo.get("cardType")) ? reqVo.get("cardType").toString() : "";
		String tipRule1 = PublicUtil.isNotEmpty(reqVo.get("tipRule1")) ? reqVo.get("tipRule1").toString() : "";
		String tipRule2 = PublicUtil.isNotEmpty(reqVo.get("tipRule2")) ? reqVo.get("tipRule2").toString() : "";
		String useRule = PublicUtil.isNotEmpty(reqVo.get("useRule")) ? reqVo.get("useRule").toString() : "";
		String cancelRule = PublicUtil.isNotEmpty(reqVo.get("cancelRule")) ? reqVo.get("cancelRule").toString() : "";
		String tags = PublicUtil.isNotEmpty(reqVo.get("tags")) ? reqVo.get("tags").toString() : null; // 2022-03-25 09:47:28【2.2-健康护理服务】服务项目配置新增tags标签字段，用于存储健康护理卡券的服务标签
		ServiceConfigEntity vo = new ServiceConfigEntity();
		Date d = new Date();
		vo.setServiceId(serviceId);
		vo.setServiceName(serviceName);
		vo.setServiceCode(serviceCode);
		vo.setServiceType(serviceType);
		vo.setConvertName(convertName);
		vo.setCardType(cardType);
		vo.setTipRule1(tipRule1);
		vo.setTipRule2(tipRule2);
		vo.setUseRule(useRule);
		vo.setCancelRule(cancelRule);
		vo.setTags(tags); // 2022-03-25 09:47:28【2.2-健康护理服务】服务项目配置新增tags标签字段，用于存储健康护理卡券的服务标签
		vo.setUpdater(loginUser.getUserCode());
		vo.setUpdateTime(d);
		if(PublicUtil.isEmpty(dataId)){//新增
			dataId = UUID.randomUUID().toString().replace("-", "");
			vo.setDataId(dataId);
			vo.setStatus(0);
			vo.setCreater(loginUser.getUserCode());
			vo.setCreateTime(d);
			serviceConfigDao.insert(vo);
		}else{
			vo.setDataId(dataId);
			serviceConfigDao.update(vo);
		}
	}

	/**
	 * 
	 * @author WANGCONG
	 * 2022年2月24日下午15:10:46
	 * @desc 服务项目配置保存前，唯一性校验
	 */
	@Override
	public boolean uniqueCheck(Map<String, Object> params) {
		int count = serviceConfigDao.uniqueCheck(params);
		if(count>0){
			return false;
		}
		return true;
	}

	/**
	 * 
	 * @author R
	 * 2022年3月02日 13:11:56
	 * @desc 根据服务商获取服务项目并且剔除掉已经选过的服务项目
	 */
	public List<ServiceConfigEntity> queryServiceByProvider(Map<String, Object> params){
		return serviceConfigDao.queryServiceByProvider(params);
	}

	/**
	 * @param params 查询参数
	 * @return
	 * @description 根据查询参数查询一个
	 * @author wkangle
	 * @time 2022/03/02 0002 11:19
	 * @exception/throws
	 */
	@Override
	public ServiceConfigEntity getOneByParams(Map<String, Object> params) {
		return serviceConfigDao.getOneByParams(params);
	}

}
